home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / EDUCNOMY / VIEWSTAR.LZH / SOLAR.BAS next >
BASIC Source File  |  1987-05-17  |  6KB  |  135 lines

  1. 1             'SOLAR DATA PROGRAM
  2. 2             'SCIENCE PROJECT
  3. 3             'MICHAEL A. SYCZYLO
  4. 4             'SIXTH GRADE
  5. 5             'VALLEY MILLS ELEMENTRY SCHOOL
  6. 10     DIM N(12)
  7. 20 PL = 3.14159 / 26 : J = 57.29578 : K$ = CHR$(13)
  8. 21            'THIS DATA DEFINES THE
  9. 22            'LOCATION WHICH ALL
  10. 23            'CALCULATIONS ARE BASED.
  11. 24            'USER'S LOCAL DATA SHOULD
  12. 25            'BE INSERTED HERE.
  13. 26            'LC$   = CITY, STATE
  14. 27            'D1,M1 = LAT. (DEG,MIN)
  15. 28            'D2,M2 = LONG. (DEG,MIN)
  16. 29            'T$    = TIME ZONE (E,C,M,P)
  17. 30     LC$ = "INDIANAPOLIS, INDIANA" : D1 = 39 :M1 = 46 :D2 = 86 : M2 =  9 : T$        = "E"
  18. 40     KEY OFF : CLS
  19. 50     RESTORE : FOR I =1 TO 12 : READ N (I) : NEXT I
  20. 60     DATA 0,31,59,90,120,151
  21. 70     DATA 181,212,243,273,304,334
  22. 80     PRINT " THIS PROGRAM FINDS THE DECLINATION";                                  : PRINT " OF THE SUN, THE EQUATION OF TIME,"
  23. 90     PRINT " THE AZMITH ANGLES OF SUNRISE AND";                                    : PRINT " SUNSET, AND THE TIMES OF SUNRISE"
  24. 100    PRINT " AND SUNSET FOR ANY POINT IN";                                    : PRINT " NORTH AMERICA."
  25. 110    PRINT
  26. 120  RESTORE 122 : FOR I = 1 TO 10 : READ KEYDES$ : KEY I, KEYDES$ + K$ : NEXT            : KEY 9, "" : KEY ON
  27. 122 DATA "NLAT", "WLON", "ZONE", "MONTH", "DAY",  "CALC", "LOC", "PRTMO", " ", "END"
  28. 130    GOSUB 640                                                                     : GOTO 220
  29. 140 COLOR 10,0
  30. 141 LOCATE 5,1
  31. 142 PRINT SPC(79)
  32. 143 LOCATE 5,1
  33. 144 BEEP
  34. 145 INPUT "Select function", Z$
  35. 146 COLOR 10,0
  36. 147 BEEP
  37. 150 LOCATE 5,1
  38. 151 PRINT SPC(79)
  39. 152 LOCATE 5,1
  40. 153 IF Z$ = "END" THEN 720 ELSE IF Z$ = "NLAT" THEN 190 ELSE IF Z$ = "WLON" THEN    200 ELSE IF Z$ = "ZONE" THEN 210 ELSE IF Z$ = "MONTH" THEN 280 ELSE IF Z$ =     "DAY" THEN 300 ELSE IF Z$ = "PRTMO" THEN 730
  41. 160  IF Z$ = "CALC" THEN GOSUB 310 : GOTO 140 ELSE IF Z$ = "LOC" THEN 180
  42. 170  SOUND 350,8 :GOTO 140
  43. 180  LINE INPUT "LOCATION (CITY,STATE)"    ,LC$ :GOSUB 640 :GOTO 140
  44. 190  INPUT "NORTH LATITUDE (DEG,MIN)"; D1,M1 :GOSUB 640 :GOTO 140
  45. 200  INPUT "WEST LONGITUDE (DEG,MIN)"; D2,M2 : GOSUB 640 : GOTO 140
  46. 210  INPUT "TIME ZONE (E, C, M, P)";T$
  47. 220  IF T$ = "E" OR T$ ="e" THEN T$ ="E" : LO =75 : GOTO 270
  48. 230  IF T$ = "C" OR T$ = "c" THEN T$ = "C" : LO = 90 :GOTO 270
  49. 240  IF T$ = "M" OR T$ = "m" THEN T$ = "M" : LO = 105 : GOTO 270
  50. 250  IF T$ = "P" OR T$ = "p" THEN T$ = "P" : LO = 120 : GOTO 270
  51. 260  GOTO 210
  52. 270  GOSUB 640 : GOTO 140
  53. 280  INPUT "MONTH (1-12) ",M : GOSUB 640 : GOTO 140
  54. 290  IF Q$ = "p" OR Q$ = "P" THEN 700 : ELSE IF Q$ = "d" OR Q$ = "D" THEN 300         ELSE 221
  55. 300 INPUT "DAY OF MONTH (1-31) ",DA  : GOSUB 640 : GOTO 140
  56. 310  X =(N(M) + DA) / 7
  57. 320  LA = D1 + M1 / 60
  58. 330  TD = (D2+M2 / 60-LO) / 15
  59. 340 D=.4560001-22.915 * COS(PL * X)- .43 * COS(2 * PL * X) - .156 * COS(3 * PL * X) + 3.83 * SIN(PL * X) + .06 * SIN(2 * PL * X) - .082 * SIN(3 * PL * X)
  60. 350  LOCATE 16,1 : PRINT STRING$(79,223) : LOCATE 17,1
  61. 360  PRINT USING "DECLINATION OF THE SUN:  ###.#";D;
  62. 370  PRINT " DEGREES"
  63. 380  E = 8.000001E-03 + .51* COS(PL * X) - 3.197* COS(2* PL * X) - .106* COS(3* PL * X) - .15* COS(4* PL * X) - 7.317001* SIN(PL * X) - 9.471001* SIN(2* PL * X) - .391* SIN(3* PL * X) - .242* SIN(4* PL * X)
  64. 390  PRINT USING "EQUATION OF TIME : ###.#"; E;
  65. 400  PRINT " MINUTES"
  66. 410  CL = COS(LA /J) : SD = SIN(D / J) : CD = COS(D /J) : Y = SD / CL
  67. 420  IF ABS(Y) =>1 THEN PRINT "NO SUNRISE OF SUNSET" : GOTO 140
  68. 430  Z = 90 - J * ATN(Y / SQR(1 - Y * Y))
  69. 440  F$ = "AZIMUTH OF SUNRISE:  ####.#" : PRINT USING F$; Z;
  70. 450  PRINT " DEGREES"
  71. 460  F$ = "AZIMUTH OF SUNSET:  ####.# " : PRINT USING F$; 360 - Z;
  72. 470  PRINT " DEGREES"
  73. 480 ST = SIN(Z / J) / CD
  74. 490  IF ABS(ST)> = 1 THEN T = 6 : TT = 6 : GOTO 520
  75. 500  CT = SQR(1 - ST * ST)
  76. 510 T=J/15 * ATN(ST / CT) : TT = T
  77. 520  IF D < 0 THEN T = 12 - T : TT = T
  78. 530  T = T + TD - E / 60 - .04
  79. 540  GOSUB 600
  80. 550  PRINT "TIME OF SUNRISE: " ; : PRINT T1$; ":"; T2$;  " " ; T$; ".S.T."
  81. 560  T = 12 - TT : T=T +TD - E / 60 + .04 : T3$ = T1$ : T4$ = T2$
  82. 570  GOSUB 600
  83. 580  PRINT "TIME OF SUNSET: "; : PRINT T1$; ":"; T2$; " " ; T$; ".S.T."
  84. 590  RETURN
  85. 600  T1 = INT(T) : T2 = T - T1 : T1$ = STR$(T1) : T2 = INT((T2 * 600 + 5) / 10)
  86. 610  T2$ = STR$(T2) : T2$ = RIGHT$(T2$, LEN(T2$) - 1)
  87. 620  IF INT(T2) < 10 THEN T2$ = "0" + T2$
  88. 630  RETURN
  89. 640  LOCATE 8,25 : COLOR 0,7 : PRINT " Present values " : COLOR 7,0 : PRINT
  90. 650  LOCATE 10,30 : PRINT STRING$(49,32) : LOCATE 10 : PRINT "Location name:                      ";  LC$
  91. 660  LOCATE 11 : PRINT "North Latitude:                      "; : PRINT USING   "###:##"; D1;M1
  92. 670  LOCATE 12 : PRINT "West Longitude:                      "; : PRINT USING   "###:##"; D2,M2
  93. 680  LOCATE 13 : PRINT "Time Zone:                           "; : PRINT USING   "!"; T$
  94. 690  LOCATE 14 : PRINT "Month:                               "; : PRINT USING   "##"; M
  95. 700  LOCATE 15 :PRINT "DAY:                                  "; : PRINT USING   "##"; DA
  96. 710  RETURN
  97. 720 KEY 1, "LIST " :KEY 2, "RUN" + K$ : KEY 3, "LOAD" + CHR$(34) : KEY 4, "SAVE" + CHR$(34) : KEY 5, "CONT" + CHR$(13) :CLS : KEY ON : WIDTH "LPT1:",80 : PRINT CHR$(27); CHR$(18) : END
  98. 730  LPRINT CHR$(15) :WIDTH "lpt1:",132
  99. 740  LPRINT "Solar Data for ";LC$; : LPRINT "      Latitude - ";D1;":";M1;: LPRINT "   LONGITUDE - ";D2;":";M2 :LPRINT
  100. 750  LPRINT "Month   Day  Declination    "; : LPRINT "  Equation of  Azimuth of   Azimuth"; : LPRINT " of    Time of    Time of "
  101. 760  LPRINT "              of Sun              "; : LPRINT "Time      Sunrise      Sunset"; : LPRINT "       Sunrise    Sunset"
  102. 765 ON M GOTO 830,850,870,890,910,930,950,970,990,1010,1030,1050
  103. 770  FOR DA = 1 TO ND
  104. 780  GOSUB 640 : GOSUB 310
  105. 790  F$="  ##    ##     ###.#            ###.#"
  106. 791 F$=F$ + "       ####.#      ####.#     "
  107. 792 LPRINT USING F$; M; DA; D; E; Z; 360 - Z;
  108. 800 LPRINT"   " T3$;   ":";T4$;"      ";  T1$ ;":";T2$
  109. 810  NEXT DA
  110. 820  LPRINT CHR$(12) : GOTO 140
  111. 830 ND=31
  112. 840 GOTO 1100
  113. 850 ND=28
  114. 860 GOTO 1100
  115. 870 ND=31
  116. 880 GOTO 1100
  117. 890 ND=30
  118. 900 GOTO 1100
  119. 910 ND=31
  120. 920 GOTO 1100
  121. 930 ND=30
  122. 940 GOTO 1100
  123. 950 ND=31
  124. 960 GOTO 1100
  125. 970 ND=31
  126. 980 GOTO 1100
  127. 990 ND=30
  128. 1000 GOTO 1100
  129. 1010 ND=31
  130. 1020 GOTO 1100
  131. 1030 ND=30
  132. 1040 GOTO 1100
  133. 1050 ND=31
  134. 1100 GOTO 770
  135.